#/bin/bash

n=1
b=1024
flag_octal="OK"
flag_bin="OK"

if [ "$1" == "-h" ]
then
  echo "DESCRIPCIÓN
       Script de test para el TP1

       -n     Cantidad de veces que se desea correr el test. Default = 1.

       -b     Tamaño en byte de los archivos aleatorios generados. Default = 1024.

       -h     Imprime esta ayuda"
	exit 1
fi

if [ "$1" == "-b" ]
then
  b=$2
fi

if [ "$1" == "-n" ]
then
  n=$2
fi

if [ "$3" == "-b" ]
then
  b=$4
fi

if [ "$3" == "-n" ]
then
  n=$4
fi

echo -e "Archivos aleatorios de $b bytes, repitiendo $n veces.\n"

cont=0
while [ $cont -lt $n ]; do

	#Genero un archivo aleatorio
	head -c $b /dev/urandom > /tmp/random.txt

	#Genero Octal Dump del archivo aleatorio con el TP1 y con el comando od
	cat /tmp/random.txt | od -b | sed -n 's/^[0-9]* //p' > /tmp/od_out.txt
	cat /tmp/random.txt | ./tp1 -l 16 -d " " > /tmp/tp_out.txt

	#Comparo si las salidas son iguales, si no lo son pongo en FAILED el flag
	lineas=`diff -w -B -a /tmp/tp_out.txt /tmp/od_out.txt | wc -l`
	if [ $lineas -ne "0" ]
	then
		flag_octal="FAILED"
	fi

	#Ahora convierto el dump octal a binario y comparo con el archivo Random.txt original
	./tp1 -l 16 -d " " -b -i /tmp/tp_out.txt > /tmp/tp_out_bin.txt

	#Comparo si las salidas son iguales, si no lo son pongo en FAILED el flag
	lineas=`diff -w -B -a /tmp/tp_out_bin.txt /tmp/random.txt | wc -l`
	if [ $lineas -ne "0" ]
	then
		flag_bin="FAILED"
	fi
	
	let cont=cont+1
done

echo "Binario a Octal: $flag_octal"
echo "Octal a Binario: $flag_bin"
